|
Date : 27 mai 1990 Programme : STARGLIDER II Outils : PERISCOPE + PANO_AT Protection : Mot de passe Temps pass� : 2 heures Fichier : SG2.EXE Soci�t� : ARGONAUT SOFTWARE Divers : Origine : INDONESIE Num�ro : 026 Tout les d�bugger se d�roulent en Full Speed et il est bien sur impossible de s'arr�ter au niveau de la demande de mot de passe. Avec l'NMI SWITCH on s'arr�te ( heureusement ) et l'on trouve facilement quelques instructions plus loin : 2DA1:0600 CMP AL,0D Qui test la touche ENTER. A partir de l� il suffit de remonter le SOFT jusqu'� un JCXZ qui si la r�ponse est mauvaise saute � 00E1 et regarde si l'on a d�j� r�pondu 3 fois ( DEC BYTE PTR [55CE] - qui est charg� avec 03 ) si c'est le cas on saute � 0100 qui saute � 0100 et on se trouve dans une boucle infinie. La premi�re chose a faire c'est de placer des NOP pour que le JCXZ ne saute pas � 00E1; Le soft fonctionne; choix de la r�solution graphique, image de pr�sentation, mais l'image d'entr�e du jeu reste inactive. En examinant le reste du code on s'apercoit qu'il faut sortir de la boucle ( atteidre le RETF ) par le saut JZ 0103 pour cel� il faut que le r�sultat de l'instruction SUB DX,[DI] soit �gal � zero. Forcer le JZ 0103 en JNZ 0103 est facile mais ne fait toujours pas fonctionner le programme. En �crivant 0000 avec PERISCOPE en DL juste avant, le programme fonctionne. Il ne reste plus qu'� faire la modif dans le code. L'id�e vient de mettre � zero DL par un XOR DL,DL et de placer cette instruction � l'endroit de mes deux NOP, mais DX est modifi� par le CALL 029C. Par contre il est ais� de le placer � la place du SUB DX,[DI] et il n'est plus n�cessaire de modifier le saut JZ 0103. * ---> Instructions remplac�es. 39D7:00CD E312 JCXZ 00E1 ----> Remplacer par 2 NOP * 90 NOP * 90 NOP 39D7:00CF 83C602 ADD SI,+02 39D7:00D2 E8C701 CALL 029C 39D7:00D5 2B15 SUB DX,[DI] ----> Remplacer par XOR * 30D2 XOR DL,DL 39D7:00D7 3E DS: 39D7:00D8 885600 MOV [BP+00],DL 39D7:00DB 88160A00 MOV [000A],DL 39D7:00DF 7422 JZ 0103 39D7:00E1 FE0ECE55 DEC BYTE PTR [55CE] 39D7:00E5 7419 JZ 0100 39D7:00E7 BE75C2 MOV SI,C275 39D7:00EA BD5000 MOV BP,0050 39D7:00ED BB0F00 MOV BX,000F 39D7:00F0 E89101 CALL 0284 39D7:00F3 9A6F05A12D CALL 2DA1:056F 39D7:00F8 9A9F0C942A CALL 2A94:0C9F 39D7:00FD E95FFF JMP 005F 39D7:0100 E9FDFF JMP 0100 39D7:0103 CB RETF Faire les m�mes modifications pour la version Francaise et Allemande. Par contre toujours lancer le jeu par E(nglish), ce n'est que le message de la protection qui est trilingue, sous peine de voir ICARIUS exploser d�s le d�but. Version Francaise: 39D7:024D E312 JCXZ 0261 39D7:024F 83C602 ADD SI,+02 39D7:0252 E84700 CALL 029C 39D7:0255 2B15 SUB DX,[DI] 39D7:0257 3E DS: 39D7:0258 885600 MOV [BP+00],DL 39D7:025B 88360A00 MOV [000A],DH 39D7:025F 7422 JZ 0283 39D7:0261 FE0ECE55 DEC BYTE PTR [55CE] 39D7:0265 7419 JZ 0280 39D7:0267 BE19C4 MOV SI,C419 39D7:026A BD5000 MOV BP,0050 39D7:026D BB0F00 MOV BX,000F 39D7:0270 E81100 CALL 0284 39D7:0273 9A6F05A12D CALL 2DA1:056F 39D7:0278 9A9F0C942A CALL 2A94:0C9F 39D7:027D E961FF JMP 01E1 39D7:0280 E9FDFF JMP 0280 39D7:0283 CB RETF Version Allemande: 39D7:018D E312 JCXZ 01A1 39D7:018F 83C602 ADD SI,+02 39D7:0192 E80701 CALL 029C 39D7:0195 2B15 SUB DX,[DI] 39D7:0197 3E DS: 39D7:0198 885600 MOV [BP+00],DL 39D7:019B 88360A00 MOV [000A],DH 39D7:019F 7422 JZ 01C3 39D7:01A1 FE0ECE55 DEC BYTE PTR [55CE] 39D7:01A5 7419 JZ 01C0 39D7:01A7 BE6CC0 MOV SI,C06C 39D7:01AA BD5000 MOV BP,0050 39D7:01AD BB0F00 MOV BX,000F 39D7:01B0 E8D100 CALL 0284 39D7:01B3 9A6F05A12D CALL 2DA1:056F 39D7:01B8 9A9F0C942A CALL 2A94:0C9F 39D7:01BD E961FF JMP 0121 39D7:01C0 E9FDFF JMP 01C0 39D7:01C3 CB RETF FREDDY |